home *** CD-ROM | disk | FTP | other *** search
- //: C20:PriorityQueue8.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // A more compact version of PriorityQueue7.cpp
- #include <iostream>
- #include <queue>
- #include <algorithm>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
-
- template<class T>
- class PQV : public priority_queue<T> {
- public:
- typedef vector<T> TVec;
- TVec vector() {
- TVec r(c.begin(), c.end());
- // c is already a heap
- sort_heap(r.begin(), r.end(), comp);
- // Put it into priority-queue order:
- reverse(r.begin(), r.end());
- return r;
- }
- };
-
- int main() {
- PQV<int> pqi;
- srand(time(0));
- for(int i = 0; i < 100; i++)
- pqi.push(rand() % 25);
- const vector<int>& v = pqi.vector();
- copy(v.begin(), v.end(),
- ostream_iterator<int>(cout, " "));
- cout << "\n-----------\n";
- while(!pqi.empty()) {
- cout << pqi.top() << ' ';
- pqi.pop();
- }
- } ///:~
-